% Chapter 2. Section 2.

\section{Are there any IDEs?}
\label{ide}
Though there are so many editors useful for the software development process, there are also IDEs (Integrated Development Environments) in the GNU/Linux world. There are heavy IDEs, lightweight IDEs, ones have native support for a large set of languages, ones can be extended via plugins. Let's have a closer look at some of them.

\subsection{Heavy IDEs}
Some of the IDEs are really heavy in usage. For example if they are written on Java and run through the JVM. Besides that it is not quite convenient when most of the functionality is provided by the plugins and not the core. The heavy behavior of the IDEs come also from their multi functionality. The more features it provides the heavier it will be.

\textbf {Eclipse} is one of the most widely used IDEs among the C/C++ developers. It is published under the Eclipse Public License. It's a free non-copyleft license. So you can freely use, study and modify the software. It is written in Java and is designed mainly for developing Java applications. The support for other programming languages like C or C++ can be added via plugin mechanism. You can add support for a set of programming languages including: C/C++, Ada, COBOL, Perl, PHP. For a complete documentation on Eclipse IDE visit it's official site: http://www.eclipse.org.

\textbf {Anjuta} is the default IDE for GNOME. It usually comes with all the GNU/Linux distributions. Main features include project management, application wizards, an interactive debugger built over gdb, and a powerful source code editor with source browsing, code completion and syntax highlighting. All these features make Anjuta one of the most convenient IDEs for C/C++ developers. It has no support for other languages. It is published under GPL and thus is free software. For a complete documentation and any other useful info visit it's official web-site: http://www.anjuta.org. 

\textbf {KDevelop} is the default IDE for KDE (K Desktop Environment) - one of the most popular desktop environments along with GNOME. KDevelop supports almost all the widely used programming languages including: Ada, Bash, C, C++, Fortran, Java, Pascal, Perl, PHP, Python and Ruby. It's feature set is really impressive: source code editor with syntax highlighting and automatic indentation, project management for different project types, such as Automake, qmake for Qt based projects and Ant for Java based projects, class browser, GUI designer, front-end for the GNU Compiler Collection and GNU Debugger, automatic code completion (C/C++), revision control (also known as SCM) support. Supported version control systems include CVS, Subversion, Perforce, ClearCase, Git, Mercurial, and Bazaar.

\subsection{Lightweight IDEs}
As a lightweight IDE can be considered any of the editors which have syntax highlighting, code folding and support for custom commands, through which users can execute the compiler or Make or the debugger. But still there is a better choice: a really lightweight IDE with a large set of features. 

\textbf {Geany Lightweight IDE} is a really powerful and really easy-to-use IDE, which supports really all the possible programming, scripting and markup languages including C, Java, JavaScript, PHP, HTML, CSS, Python, Perl, Ruby, Pascal and Haskell. It supports syntax highlighting, code auto completion (including code from external files), code folding, code snippets, all the possible character encodings and conversion among them, project management, integration with really different compilers (even TEX typesetters). Geany also supports plugin mechanism through which users can have enabled another set of useful features: file manager, debugger, version control, spell checking etc. It is released under GNU GPL. For a complete feature set, documentation, manuals and the project itself visit it's official web-site: http://www.geany.org. 

\subsection{Good and bad IDEs}
Having such a set of various IDEs can make harder to decide which one to use. That's why we would think useful to give an advice. I'm using Geany since the first day I found it out. Even more: this book is written using Geany and it's integration with the LATEX system. So I advice to use Geany at least to deal with the examples from this book, as they will be presented adapted to Geany.


